A Storage Area Network (SAN) is a sub-network of shared storage devices such as disk and tape. SANs provide high-speed, fault-tolerant access to data for client, server and host computing devices (“host computers”). Traditionally, computers were directly connected to storage devices, such that only the computer that was physically connected to those storage devices could retrieve data stored therein. A SAN allows any computer connected to the SAN to access any storage device included within the SAN. As more storage devices are added to a SAN, they become accessible to any computer connected to the SAN. The explosion of the Internet, the consolidation of servers and the growing complexity of applications, with more graphics, video and sound data to be stored, are resulting in a burgeoning demand for improved storage interconnect solutions for enterprise wide systems and for networks of such systems.
Typically one or more SANs can be liked to one or more Local Area Networks (LANs), Metropolitan Area Networks (MANs), or Wide Area Networks (WANs) to provide for the data storage needs of these networks. However some problems arise when a host computing device connected to a LAN, MAN or WAN wants to retrieve information from a SAN because protocol used to transfer data from SANs differs from protocol used to transfer data across the above-referenced network types.
Specifically, a Fibre Channel Protocol (FCP) standard is widely used in SANs to provide a reliable, guaranteed, low latency data transfer mechanism. FCP does not provide for “stack-like functions” but is an effective serial replacement for a parallel small computer systems interface (“SCSI”), which is the interface between a storage device that is physically connected to a computer. According to this protocol, data is organized into Fibre Channel (FC) Frames of up to 2148 bytes in length. FIG. 1B illustrates the typical structure of a FC Frame. It includes a four byte Start of Frame field, a twenty-four byte Frame Header field, an Optional Header field of sixty-four bytes, a Payload field of from zero to 2048 bytes, a four byte Cyclic Redundancy Check field (“CRC”), and a four byte End of Frame field.
By contrast, LANs, MANs, and WANs typically use a Transmission Control Protocol/Internet Protocol (“TCP/IP”) standard to transfer data from one computer to another. TCP/IP is a layered group (“stack”) of protocols used to efficiently transfer data across such networks by addressing problems such as data loss and out of order delivery of data blocks. TCP/IP has five layers each having a different function during data transfer. From the lowest hierarchy level to the highest hierarchy level, the five layers include a Physical Layer, a Media Access Control (“MAC”) Layer, a Network Layer, a Transport Layer and a Session Layer. The functions of these five layers are based upon the functions performed by a seven-layered international protocol standard called Open Systems Interconnection (OSI) Model.
The Physical Layer is concerned with transmitting raw data bits over a communication channel. This layer makes sure that when a transmitting side sends a ‘1’ it is received by a recipient correctly. The MAC Layer corresponds to a Data Link Layer of the OSI Model. The main task of this layer is to transmit frames sequentially. The Network Layer implements Internet Protocol (“IP”) for controlling the operation of the network. A packet is the basic unit of data defined at this layer. The Network Layer determines how packets are routed from a source to a desired destination. Routes are based on static or dynamic tables available to persons of ordinary skill in the art. The Transport Layer splits the data from the Session Layer into smaller units called segments, if need be, and pass these segments to the Network Layer. It also ensures that the segments arrive correctly at the other end. Transmission Control Protocol (“TCP”) is implemented by the Transport Layer. TCP generates a sequence number for each data packet. To reassemble data into the original frames, the sequence numbers must be matched up. Finally, the Session Layer defines guidelines for application user interface and communications between host computers.
Gigabit Ethernet is widely used as the physical medium in LAN, WAN and MAN environments. FIG. 1A illustrates the typical structure of an Ethernet Frame as defined by IEEE 802.3. The maximum packet size in the Ethernet domain is 1500 bytes. The Ethernet Frame includes a MAC Layer for enabling the Ethernet Frame to be transmitted sequentially. The MAC Layer includes a Start of Frame byte, a six byte destination address (“DA”) field, a six byte source address (“SA”) field, and a four byte virtual LAN (“VLAN”) field. The remainder of the Ethernet Frame is a Payload field, and a four byte Frame Checksum (“FCS”) field, which is an error checking code for the Frame.
When transferring FC frames over the Gigabit Ethernet, a given FC Frame may require being transferred as two Ethernet Frames because the maximum packet size of an FC Frame (2148 bytes) is larger than the maximum packet size of an Ethernet Frame (1500 bytes). The problem with prior art data transfers of FC Frames over the Ethernet is the inability of the TCP/IP stack to accurately transfer FC Frames of varying sizes over the Ethernet Frames, especially those FC Frames that are larger that the maximum size of a Gigabit Ethernet Frame, because prior art TCP/IP stacks are not equipped to adequately and reliably handle additional functions associated with such a transfer.
What is needed is a method and an improved TCP/IP protocol stack for: mapping any sized FC frame onto one or two Gigabit Ethernet Frames; reliably transferring the corresponding Ethernet Frame(s) over the Ethernet; and reconstructing the original FC frame at its destination, if necessary.